package w.z.x.framework.repository.interfaces;

import java.io.Serializable;
import java.util.function.Consumer;

/**
 * 连接条件
 *
 * @author 魏祖潇
 */
public interface Nested<Param, Child> extends Serializable {

    /**
     * 与条件
     *
     * @param condition 是否拼接
     * @param consumer  and连接
     * @return Wrapper
     */
    Child and(boolean condition, Consumer<Param> consumer);

    /**
     * 与条件
     *
     * @param consumer and条件
     * @return Wrapper
     */
    default Child and(Consumer<Param> consumer) {
        return and(true, consumer);
    }

    /**
     * 或条件
     *
     * @return Wrapper
     */
    Child or();

}
